#include "ShaderProvider.hpp"
#include "GL/glfw.h"

#ifndef SHADER
#define SHADER
class Shader : public ShaderProvider
{
	public:
	
	Shader(const char* vertexSource, const char* fragmentSource);
	Shader(){program = 0;}
	bool Use() const;
	static void UseNoShader();
	void UpdateUniform(const char* VariableName, float value);
	
	static Shader* PassthroughShader;
	static Shader* PassthroughShaderPost;
	static Shader* PhongShader;
	static Shader* HorizontalGauss;
	static Shader* VerticalGauss;
	static Shader* BlendShader;
	static Shader* SimpleHorizGauss;
	static Shader* SimpleVertGauss;
	
	GLuint GetProgram() const{return program;}
	protected:
	private:
	GLuint program;
};
void Init();
#endif

